home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / pao / tsr / src / retry.asm < prev    next >
Assembly Source File  |  1994-06-01  |  18KB  |  551 lines

  1. ;============================================================================
  2. ;    << MASM V5.1 >>  for  FM TOWNS
  3. ;============================================================================
  4. .186
  5.     PAGE        60,132
  6.     NAME        RETRY
  7.     TITLE        INT 24h retry
  8. ;============================================================================
  9. ;    致命的エラートラッププログラム
  10. ;
  11. ;    All Rights Reserved, Copyright (C) Y.Hirata 1993.
  12. ;    Programmed by Y.Hirata ( NIFTY-ID : NAB03321 )
  13. ;
  14. ;    < NOTE > TAB=4
  15. ;============================================================================
  16. code        SEGMENT
  17.             ASSUME    cs:code,ds:code,es:code,ss:code
  18. ;----------------------------------------------------------------------------
  19.             ORG        000h
  20. SEGTOP        LABEL    BYTE
  21. ;----------------------------------------------------------------------------
  22.             ORG        012h
  23. critadrs    DD        FAR
  24. ;----------------------------------------------------------------------------
  25.             ORG        016h
  26. owner        DW        ?
  27. ;----------------------------------------------------------------------------
  28.             ORG        02Ch
  29. envadrs        DW        ?
  30. ;----------------------------------------------------------------------------
  31.             ORG        080h
  32. ARGUMENT    LABEL    BYTE
  33. argc        DB        ?                        ; 引数の文字数
  34. ;----------------------------------------------------------------------------
  35.             ORG        100h
  36. entry:        jmp        main
  37. ;----------------------------------------------------------------------------
  38. CR            EQU        0Dh                        ;
  39. LF            EQU        0Ah                        ;
  40. BEL            EQU        07h                        ;
  41. TAB            EQU        09h                        ;
  42. EOF            EQU        1Ah                        ;
  43. ;
  44. TITLE_name    DB            'RETRY v1.00'        ; 常駐チェック用文字列
  45. TITLE_len    EQU            $-TITLE_name        ;
  46. ;
  47. ;****************************************************************************
  48. ;            データ領域
  49. ;****************************************************************************
  50. v_24        DD        FAR                        ; ベクタアドレス
  51. rcnt        DW        0                        ; リトライカウンタ
  52. rax            DW        ?                        ;
  53. rcx            DW        ?                        ;
  54. paraoff        LABEL    BYTE                    ;
  55. nretry        DW        ?                        ; リトライ回数
  56. wtime        DW        ?                        ; リトライ時待ち時間
  57. trapflg        DB        ?                        ; トラップ処理フラグ
  58. parasize    EQU        $-paraoff                ; パラメタ領域サイズ
  59. ;
  60. ;****************************************************************************
  61. ;            MACRO
  62. ;****************************************************************************
  63. TSREND        MACRO                            ; プログラム常駐終了(31H)
  64.             local    close                    ;
  65.             mov        cx,5                    ; デフォルトオープンファイルのクローズ
  66. close:                                        ;
  67.             mov        bx,cx                    ;
  68.             dec        bx                        ; ( 0 ~ 4 )
  69.             mov        ah,3Eh                    ; ファイルクローズ
  70.             int        21h                        ;
  71.             loop    close                    ;
  72. ;
  73.             mov        ax,cs:envadrs            ;
  74.             mov        es,ax                    ;
  75.             mov        ah,49h                    ;
  76.             int        21h                        ;
  77. ;
  78.             mov        dx,OFFSET SEGEND        ;
  79.             add        dx,15                    ;
  80.             shr        dx,4                    ; パラグラフ単位
  81.             mov        ax,3100h                ;
  82.             int        21h                        ; 常駐終了
  83.             ENDM                            ;
  84. ;----------------------------------------------------------------------------
  85. PRGEND        MACRO                            ; プログラム終了(4CH)
  86.             mov        ax,4C00h                ;
  87.             int        21h                        ; Program End !
  88.             ENDM                            ;
  89. ;
  90. ;****************************************************************************
  91. ;            常駐処理部
  92. ;****************************************************************************
  93. ;----------------------------------------------------------------------------
  94. ;            割り込みフック処理
  95. ;----------------------------------------------------------------------------
  96. i21h        PROC    FAR                        ;
  97.             mov        WORD PTR cs:rcnt,0        ;
  98.             mov        cs:rax,ax                ; AX退避
  99.             cmp        ax,2524h                ;
  100.             jnz        short i21chain            ;
  101.             mov        al,cs:trapflg            ;
  102.             or        al,al                    ;
  103.             jnz        i24setvect                ;
  104.             mov        ax,ds                    ;
  105.             cmp        ax,WORD PTR cs:owner    ;
  106.             jz        short i24setvect        ;
  107. i21chain:                                    ;
  108.             mov        ax,cs:rax                ; AX復元
  109.             DB        0EAh                    ; far jump
  110. v_21        DD        FAR                        ; ベクタアドレス
  111. ;;            jmp        cs:[v_21]                ; 本来のベクタに処理を移す。
  112. i24setvect:                                    ;
  113.             push    si                        ;
  114.             push    es                        ;
  115.             xor        ax,ax                    ;
  116.             mov        es,ax                    ; es=0
  117.             mov        ax,24h                    ;
  118.             shl        ax,2                    ; *4
  119.             mov        si,ax                    ;
  120.             mov        ax,OFFSET cs:i24h        ;
  121.             mov        WORD PTR es:[si],ax        ; offset
  122.             mov        ax,cs                    ;
  123.             mov        WORD PTR es:[si+2],ax    ; segment
  124.             pop        es                        ;
  125.             pop        si                        ;
  126.             mov        ax,cs:rax                ; AX復元
  127.             iret                            ;
  128. i21h        ENDP                            ;
  129. ;----------------------------------------------------------------------------
  130. ;            割り込みフック処理
  131. ;----------------------------------------------------------------------------
  132. i24h        PROC    FAR                        ;
  133.             mov        cs:rcx,cx                ; レジスタ退避
  134.             mov        cx,cs:wtime                ;
  135.             int        0FDh                    ; wait
  136.             mov        cx,cs:rcx                ; レジスタ復元
  137.             mov        ax,cs:rcnt                ;
  138.             cmp        ax,WORD PTR cs:nretry    ;
  139.             jb        short i24h_retry        ;
  140.             mov        ax,0003h                ; システムコール失敗でリターン
  141.             mov        WORD PTR cs:rcnt,0        ;
  142.             iret                            ;
  143. i24h_retry:                                    ;
  144.             inc        ax                        ;
  145.             mov        cs:rcnt,ax                ;
  146.             mov        ax,0001h                ; リトライ
  147.             iret                            ;
  148. i24h        ENDP                            ;
  149. ;----------------------------------------------------------------------------
  150. SEGEND        LABEL    BYTE                    ; ↑ここまでを常駐
  151. ;----------------------------------------------------------------------------
  152. ;
  153. ;****************************************************************************
  154. ;            非常駐処理部
  155. ;****************************************************************************
  156. ;----------------------------------------------------------------------------
  157. ;    文字列表示(^C無効)
  158. ;    < IN  >    : ds:si    文字列格納位置    
  159. ;
  160. ;    < USE >    : si
  161. ;----------------------------------------------------------------------------
  162. puts        PROC    NEAR                    ;
  163.             push    dx                        ;
  164. putslp:                                        ;
  165.             mov        dl,[si]                    ;
  166.             or        dl,dl                    ; 文字列終端 ?
  167.             jz        short putsend            ; YES->終了
  168.             mov        ah,02                    ;
  169.             int        21h                        ; 文字表示
  170.             inc        si                        ;
  171.             jmp        short putslp            ;
  172. putsend:                                    ;
  173.             pop        dx                        ;
  174.             ret                                ;
  175. puts        ENDP                            ;
  176. ;----------------------------------------------------------------------------
  177. ;    ベクタ取得(ds=csでcall)
  178. ;    < RET >    : es:bx    ベクタアドレス
  179. ;----------------------------------------------------------------------------
  180. getvct:                                        ;
  181.             mov        ax,3521h                ;
  182.             int        21h                        ; 割込みベクタ取得
  183.             mov        WORD PTR v_21,bx        ;
  184.             mov        WORD PTR v_21+2,es        ; 本来の割り込みベクタの取得・保存
  185.             nop                                ;
  186.             mov        ax,3524h                ;
  187.             int        21h                        ; 割込みベクタ取得
  188.             mov        WORD PTR v_24,bx        ;
  189.             mov        WORD PTR v_24+2,es        ; 本来の割り込みベクタの取得・保存
  190.             ret                                ;
  191. ;----------------------------------------------------------------------------
  192. ;    常駐文字列チェック(ds=csでcall)
  193. ;    < IN  >    : es    常駐セグメント
  194. ;    < RET >    : ゼロフラグ (等しければ, ゼロフラグon)
  195. ;
  196. ;    < USE >    : si, di
  197. ;----------------------------------------------------------------------------
  198. tsrcmp:                                        ;
  199.             mov        cx,TITLE_len            ;
  200.             mov        si,OFFSET TITLE_name    ; ds:si
  201.             mov        di,OFFSET TITLE_name    ; es:di
  202.     repz    cmpsb                            ; 常駐チェック
  203.             ret                                ;
  204. ;----------------------------------------------------------------------------
  205. ;    常駐チェック(ds=csでcall)
  206. ;    < RET >    : es:bx    常駐アドレス
  207. ;
  208. ;    < USE >    : ax, si, di
  209. ;----------------------------------------------------------------------------
  210. tsr_chk:                                    ;
  211.             mov        BYTE PTR tsrflg,0        ; 常駐フラグクリア
  212.             mov        BYTE PTR hookflg,0        ; ベクタフックフラグクリア
  213. mcb_chk:                                    ;
  214.             mov        ah,52h                    ; 内部変数領域アドレス取得
  215.             int        21h                        ;
  216.             mov        es,es:[bx-2]            ; 先頭MCBセグメントアドレス
  217. mcb_lp:                                        ;
  218.             cmp        BYTE PTR es:[0],'Z'        ; 最終MCB ?
  219.             je        short mcb_end            ; YES->終了
  220.             cmp        BYTE PTR es:[0],'M'        ; MCB ?
  221.             jne        short mcb_err            ; NO ->MCB MARK ERROR
  222. mcb_idchk:                                    ;
  223.             push    es                        ; MCBセグメント退避
  224.             mov        es,WORD PTR es:[1]        ; PSPセグメント(Owner ID)
  225.             mov        ax,es                    ;
  226.             cmp        ax,pspseg                ; 起動プログラムのPSPか ?
  227.             je        short mcb_next            ; YES->次のMCBをチェック
  228.             call    tsrcmp                    ; 常駐文字列照合
  229.             jz        short mcb_on            ; 等しければ, 常駐済
  230. mcb_next:                                    ;
  231.             pop        es                        ; MCBセグメント復元
  232.             mov        ax,es                    ;
  233.             add        ax,es:[3]                ; 使用メモリのパラグラフ数加算
  234.             inc        ax                        ; 次のMCBセグメント
  235.             mov        es,ax                    ;
  236.             jmp        short mcb_lp            ;
  237. mcb_on:                                        ; 常駐済
  238.             pop        ax                        ; スタック調整
  239.             mov        BYTE PTR tsrflg,1        ;
  240. mcb_end:                                    ; 非常駐
  241.             push    bx                        ;
  242.             push    es                        ;
  243.             call    getvct                    ; 割込みベクタ取得
  244.             pop        es                        ;
  245.             pop        bx                        ;
  246. vctchk_21:                                    ;
  247.             mov        ax,es                    ;
  248.             cmp        WORD PTR v_21+2,ax        ; 常駐セグメント比較
  249.             je        short vctchk_99            ;
  250.             mov        BYTE PTR hookflg,1        ; ベクタフックされている
  251. vctchk_99:                                    ;
  252.             ret                                ;
  253. mcb_err:                                    ;
  254.             mov        si,OFFSET msg6            ; MCBエラー
  255.             call    puts                    ;
  256.             ret                                ;
  257. ;----------------------------------------------------------------------------
  258. ;    プログラム名の設定(es=ds=csでcall)
  259. ;    常駐時の識別用として, コマンドライン領域にプログラム名を複写しておく.
  260. ;----------------------------------------------------------------------------
  261. setpname:                                    ;
  262.             mov        si,OFFSET prgname        ;
  263.             mov        di,OFFSET ARGUMENT        ;
  264.             mov        cx,prgnamelen            ;
  265.     rep        movsb                            ; ds:si->es:di
  266.             ret                                ;
  267. ;----------------------------------------------------------------------------
  268. ;    初期処理(es=ds=csでcall)
  269. ;----------------------------------------------------------------------------
  270. init:                                        ;
  271.             ret                                ;
  272. ;----------------------------------------------------------------------------
  273. ;    起動処理( メイン )
  274. ;----------------------------------------------------------------------------
  275. main        PROC    NEAR                    ;
  276.             mov        WORD PTR pspseg,es        ; PSPセグメント保存
  277.             cli                                ; 割り込み禁止
  278.             cld                                ;
  279. ;
  280.             mov        si,OFFSET msg0            ; オープニングメッセージ(文字列)
  281.             call    puts                    ;
  282.             call    tsr_chk                    ; 常駐チェック
  283.             cmp        BYTE PTR tsrflg,0        ; 常駐していない ?
  284.             jz        short arg_chk            ; YES->arg_chk
  285. ;
  286.             push    ds                        ; 常駐領域内パラメタを複写
  287.             push    es                        ;
  288.             mov        ax,es                    ;
  289.             push    ds                        ;
  290.             pop        es                        ;
  291.             mov        ds,ax                    ; ds<->es
  292.             mov        si,OFFSET paraoff        ;
  293.             mov        di,OFFSET paraoff        ;
  294.             mov        cx,parasize                ; パラメタ領域サイズ
  295.     rep        movsb                            ; ds:si->es:di
  296.             pop        es                        ;
  297.             pop        ds                        ;
  298. arg_chk:                                    ;
  299.             call    init                    ; 初期処理
  300.             sti                                ;
  301.             call    argchk                    ; 引数のチェック
  302.             mov        al,argflg                ;
  303.             or        al,al                    ; al=0 ?
  304.             jz        short tsr_init            ; YES->通常処理開始へ
  305.             mov        si,OFFSET usage            ; ヘルプメッセージ
  306.             call    puts                    ;
  307.             PRGEND                            ;
  308. tsr_init:                                    ;
  309.             mov        al,tsrflg                ; 常駐フラグ
  310.             or        al,al                    ; 常駐しているか ?
  311.             jnz        short mem_clear            ; YES->常駐処理へ
  312.             jmp        mem_noclr                ; NO->非常駐処理へ
  313. ;-------------------------------------------;
  314. ;    常駐解除処理
  315. ;-------------------------------------------;
  316. mem_clear:                                    ;
  317.             mov        al,relflg                ; 常駐解除フラグ
  318.             or        al,al                    ; 常駐解除しない ?
  319.             jz        short mem_update        ; YES->終了
  320. mem_clrchk:                                    ;
  321.             cmp        BYTE PTR hookflg,0        ; ベクタフックされていないか ?
  322.             je        short mem_clear_ok        ; YES->常駐解除
  323.             mov        si,OFFSET msg7            ; 常駐解除不可メッセージ
  324.             call    puts                    ;
  325.             PRGEND                            ;
  326. mem_clear_ok:                                ;
  327.             push    ds                        ;
  328.             lds        dx,DWORD PTR es:v_21    ;
  329.             mov        ax,2521h                ; 割り込みベクタを元に戻す!
  330.             int        21h                        ;
  331.             nop                                ;
  332.             lds        dx,DWORD PTR es:v_24    ;
  333.             mov        ax,2524h                ; 割り込みベクタを元に戻す!
  334.             int        21h                        ;
  335. ;
  336.             mov        ah,49h                    ; プログラムを開放
  337.             int        21h                        ;
  338.             pop        ds                        ;
  339.             jc        short mem_clrerr        ; メモリ開放失敗
  340.             mov        si,OFFSET msg2            ; 開放メッセージ
  341.             jmp        short mem_clrend        ;
  342. mem_clrerr:                                    ;
  343.             mov        si,OFFSET msg8            ; メモリ開放失敗メッセージ
  344. mem_clrend:                                    ;
  345.             call    puts                    ;
  346.             PRGEND                            ;
  347. ;
  348. mem_update:                                    ; 常駐領域内のパラメタ値変更
  349.             mov        si,OFFSET msg3            ; 常駐済メッセージ
  350.             call    puts                    ;
  351.             mov        al,optflg                ;
  352.             or        al,al                    ; オプション指定なし ?
  353.             jz        short mem_upend            ; YES->終了
  354.             cli                                ;
  355.             mov        si,OFFSET paraoff        ;
  356.             mov        di,OFFSET paraoff        ;
  357.             mov        cx,parasize                ; パラメタ領域サイズ
  358.     rep        movsb                            ; ds:si->es:di
  359.             sti                                ;
  360.             mov        si,OFFSET msg5            ; アップデートメッセージ(文字数)
  361.             call    puts                    ;
  362. mem_upend:                                    ;
  363.             PRGEND                            ;
  364. ;
  365. mem_noclr:                                    ;
  366.             mov        al,relflg                ; 常駐解除フラグ
  367.             or        al,al                    ; 常駐解除 ?
  368.             jz        short mem_setup            ; NO->常駐処理へ
  369.             mov        si,OFFSET msg4            ; 非常駐メッセージ
  370.             call    puts                    ;
  371.             PRGEND                            ;
  372. ;-------------------------------------------;
  373. ;    常駐処理
  374. ;-------------------------------------------;
  375. mem_setup:                                    ;
  376.             push    cs                        ;
  377.             pop        es                        ; es=cs
  378.             call    setpname                ;
  379.             mov        si,OFFSET msg1            ; 常駐メッセージ
  380.             call    puts                    ;
  381. ;
  382.             mov        dx,OFFSET i21h            ; 常駐処理プロシジャを
  383.             mov        ax,2521h                ; ベクタセット
  384.             int        21h                        ;
  385. ;
  386.             TSREND                            ; 常駐終了
  387. ;----------------------------------------------------------------------------
  388. ;    引数のチェック
  389. ;----------------------------------------------------------------------------
  390. argchk:                                        ; 引数のチェック
  391.             mov        bx,OFFSET ARGUMENT        ;
  392.             mov        BYTE PTR optflg,0        ;
  393. arglp:                                        ;
  394.             inc        bx                        ;
  395.             mov        al,[bx]                    ;
  396.             cmp        al,CR                    ;
  397.             jne        short optchk            ;
  398.             ret                                ; 引数チェック終了
  399. optchk:                                        ; 引数チェック開始
  400.             cmp        al,'-'                    ; オプションスイッチは'-','/'で始まる.
  401.             je        short optsw1            ;
  402.             cmp        al,'/'                    ;
  403.             je        short optsw1            ;
  404.             cmp        al,' '                    ; SPACE
  405.             je        short arglp                ;
  406.             cmp        al,TAB                    ; TAB
  407.             je        short arglp                ;
  408.             jmp        opterr                    ;
  409. optsw1:                                        ;
  410.             inc        bx                        ;
  411.             mov        al,[bx]                    ;
  412.             or        al,20H                    ; 大文字->小文字
  413.             cmp        al,'r'                    ; 'r','R'か ?
  414.             jne        short optsw2            ; NO->次のチェックへ
  415.             mov        BYTE PTR relflg,1        ; 常駐解除フラグ ON
  416.             jmp        short arglp                ;
  417. optsw2:                                        ; リトライ回数
  418.             cmp        al,'c'                    ; 'c'か ?
  419.             jne        short optsw3            ; NO->次のチェックへ
  420.             call    atou                    ;
  421.             cmp        BYTE PTR valflg,0        ; 数値指定あり ?
  422.             jne        short optsw2chk            ; YES->数値チェックへ
  423.             mov        WORD PTR nretry,3        ; 標準値設定
  424.             jmp        short optswon            ;
  425. optsw2chk:                                    ;
  426.             mov        nretry,ax                ; 値格納
  427.             jmp        short optswon            ;
  428. optsw3:                                        ; リトライ時待ち時間
  429.             cmp        al,'w'                    ; 'w'か ?
  430.             jne        short optsw4            ; NO->次のチェックへ
  431.             call    atou                    ;
  432.             cmp        BYTE PTR valflg,0        ; 数値指定あり ?
  433.             jne        short optsw3chk            ; YES->数値チェックへ
  434.             mov        WORD PTR wtime,100        ; 標準値設定
  435.             jmp        short optswon            ;
  436. optsw3chk:                                    ;
  437.             cmp        ax,0                    ;
  438.             jz        short opterr            ; 0ならばエラー
  439.             mov        wtime,ax                ; 値格納
  440.             jmp        short optswon            ;
  441. optpause:                                    ;
  442.             mov        al,[bx+1]                ;
  443.             cmp        al,' '                    ; SPACE
  444.             je        short arglp                ;
  445.             cmp        al,TAB                    ; TAB
  446.             je        short arglp                ;
  447.             cmp        al,CR                    ; 終了
  448.             je        short arglp                ;
  449.             jmp        optsw1                    ;
  450. optswon:                                    ;
  451.             mov        BYTE PTR optflg,1        ; オプションスイッチ ON
  452.             jmp        short optpause            ;
  453. optsw4:                                        ; トラップ処理識別
  454.             cmp        al,'a'                    ; 'a'か ?
  455.             jne        short opterr            ; NO->次のチェックへ
  456.             call    atou                    ;
  457.             cmp        BYTE PTR valflg,0        ; 数値指定あり ?
  458.             jne        short optsw4chk            ; YES->数値チェックへ
  459.             mov        BYTE PTR trapflg,0        ; 標準値設定
  460.             jmp        short optswon            ;
  461. optsw4chk:                                    ;
  462.             or        ax,ax                    ;
  463.             jnz        short optsw4chk2        ; 0以外は次のチェックへ
  464.             mov        trapflg,al                ;
  465.             jmp        short optswon            ;
  466. optsw4chk2:                                    ;
  467.             cmp        ax,1                    ;
  468.             jne        short opterr            ; 1でなければエラー
  469.             mov        trapflg,al                ;
  470.             jmp        short optswon            ;
  471. opterr:                                        ; オプションスイッチエラー
  472.             mov        BYTE PTR argflg,1        ;
  473.             ret                                ;
  474. ;----------------------------------------------------------------------------
  475. ;    文字列を整数に変換
  476. ;    < IN  >    : ds:bx    文字列の先頭位置-1
  477. ;    < RET >    : ax    整数値(符号なし)
  478. ;
  479. ;    < USE >    : bx, cx, dx
  480. ;----------------------------------------------------------------------------
  481. atou:                                        ;
  482.             inc        bx                        ;
  483.             xor        ax,ax                    ; ax=0
  484.             xor        dx,dx                    ; dx=0
  485.             xor        ch,ch                    ; ch=0
  486.             mov        BYTE PTR valflg,0        ;
  487. atou_next:                                    ;
  488.             mov        cl,[bx]                    ; 文字コード取得
  489.             sub        cl,'0'                    ; 文字->数字
  490.             jb        short atou_end            ; '0'よりも小さければ終わり
  491.             cmp        cl,9                    ; '9'よりも大きいか ?
  492.             ja        short atou_end            ; YESならば終わり
  493.             push    cx                        ;
  494.             mov        cx,0AH                    ;
  495.             mul        cx                        ; AXを10倍する
  496.             pop        cx                        ;
  497.             add        ax,cx                    ; AXに新値を格納
  498.             inc        bx                        ; 次の文字位置
  499.             mov        BYTE PTR valflg,1        ;
  500.             jmp        short atou_next            ;
  501. atou_end:                                    ;
  502.             dec        bx                        ; 先読み分を戻す
  503.             ret                                ;
  504. ;
  505. main        ENDP                            ;
  506. ;
  507. tsrflg        DB        0                        ; 常駐フラグ
  508. argflg        DB        0                        ; 引数チェックフラグ
  509. optflg        DB        0                        ; オプションフラグ
  510. valflg        DB        0                        ; オプション数値フラグ
  511. relflg        DB        0                        ; 常駐解除フラグ
  512. hookflg        DB        0                        ; ベクタフックフラグ
  513. ;
  514. pspseg        DW        ?                        ; PSPセグメント
  515. prgname        DB        11,'RETRY v1.00',CR        ;
  516. prgnamelen    EQU        $-prgname                ;
  517. ;
  518. msg0        DB        CR,LF,'Critical error Trap  Version 1.00'
  519.             DB        '  (C)パオパオ 1993. '
  520.             DB        CR,LF,0
  521. msg1        DB        '★ 常駐します ★',CR,LF,0
  522. msg2        DB        '☆ 常駐解除しました ☆',CR,LF,0
  523. msg3        DB        '常駐しています.',CR,LF,0
  524. msg4        DB        '常駐していません.',CR,LF,BEL,0
  525. msg5        DB        'オプションパラメタ値を更新しました.',CR,LF,BEL,0
  526. msg6        DB        'メモリの状態が正しくありません.',CR,LF,BEL,0
  527. msg7        DB        'ベクタをフックされているため, 常駐解除できません.'
  528.             DB        CR,LF,BEL,0
  529. msg8        DB        'メモリの開放に失敗しました.',CR,LF,BEL,0
  530. ;
  531. usage        DB        "Usage: 'RETRY "
  532.             DB        "[-r] [-a[n]] [-c[n]] [-w[n]]'"
  533.             DB        CR,LF
  534.             DB        '        -r     常駐解除            ',CR,LF
  535.             DB        '        -a[n]  トラップ処理        '
  536.             DB        'n: 0=親プロセスのみ, 1=全プロセス,  標準: 0',CR,LF
  537.             DB        '        -c[n]  リトライ回数        '
  538.             DB        'n: 0~65535,   標準: 3',CR,LF
  539.             DB        '        -w[n]  リトライ時待ち時間  '
  540.             DB        'n: 1~65535,   標準: 100(*10us)',CR,LF
  541.             DB        0
  542. ;
  543. code        ENDS                            ;
  544.             END        entry                    ;
  545. ;
  546. ;    < HISTORY >
  547. ;============================================================================
  548. ;    1993.04.12 : CREATE
  549. ;============================================================================
  550.  
  551.